# figura global de confirmados
# 2020-03-15  version actual:   2021-04-08
# GAD 
###############################################
options(allow_html=TRUE)
# Bibliotecas a importar
check_packages <- function(packages) {
  if (all(packages %in% rownames(installed.packages()))) {
    TRUE
  } else{
    cat(
      "Instalar los siguientes packages antes de ejecutar el presente script\n",
      packages[!(packages %in% rownames(installed.packages()))],
      "\n"
    )
  }
}
packages_needed <- c("ggplot2", "ggrepel", "plotly",
                     "lubridate", "htmlwidgets" , "RColorBrewer",
                     "sqldf", "grid", "data.table", "readr" )
check_packages(packages_needed)
## [1] TRUE
library(ggplot2)
library(ggrepel)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(htmlwidgets)
library(RColorBrewer)
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
library(grid)
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:lubridate':
## 
##     hour, isoweek, mday, minute, month, quarter, second, wday, week,
##     yday, year
library(readr)
#library(ggfortify)
#library(reshape2)

############################################## Leer
# time_series_covid19_confirmed_global.csv


URL <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/"
url_archivo  <- paste(URL,"time_series_covid19_confirmed_global.csv", sep = "")
COVID_19_h  <- read.csv(url_archivo, sep = ",", header = T)

############################################## preparo los datos

COVID_19_h$Lat  <- NULL 
COVID_19_h$Long <- NULL
COVID_19_h$Province.State <- NULL
colnames(COVID_19_h)
##   [1] "Country.Region" "X1.22.20"       "X1.23.20"       "X1.24.20"      
##   [5] "X1.25.20"       "X1.26.20"       "X1.27.20"       "X1.28.20"      
##   [9] "X1.29.20"       "X1.30.20"       "X1.31.20"       "X2.1.20"       
##  [13] "X2.2.20"        "X2.3.20"        "X2.4.20"        "X2.5.20"       
##  [17] "X2.6.20"        "X2.7.20"        "X2.8.20"        "X2.9.20"       
##  [21] "X2.10.20"       "X2.11.20"       "X2.12.20"       "X2.13.20"      
##  [25] "X2.14.20"       "X2.15.20"       "X2.16.20"       "X2.17.20"      
##  [29] "X2.18.20"       "X2.19.20"       "X2.20.20"       "X2.21.20"      
##  [33] "X2.22.20"       "X2.23.20"       "X2.24.20"       "X2.25.20"      
##  [37] "X2.26.20"       "X2.27.20"       "X2.28.20"       "X2.29.20"      
##  [41] "X3.1.20"        "X3.2.20"        "X3.3.20"        "X3.4.20"       
##  [45] "X3.5.20"        "X3.6.20"        "X3.7.20"        "X3.8.20"       
##  [49] "X3.9.20"        "X3.10.20"       "X3.11.20"       "X3.12.20"      
##  [53] "X3.13.20"       "X3.14.20"       "X3.15.20"       "X3.16.20"      
##  [57] "X3.17.20"       "X3.18.20"       "X3.19.20"       "X3.20.20"      
##  [61] "X3.21.20"       "X3.22.20"       "X3.23.20"       "X3.24.20"      
##  [65] "X3.25.20"       "X3.26.20"       "X3.27.20"       "X3.28.20"      
##  [69] "X3.29.20"       "X3.30.20"       "X3.31.20"       "X4.1.20"       
##  [73] "X4.2.20"        "X4.3.20"        "X4.4.20"        "X4.5.20"       
##  [77] "X4.6.20"        "X4.7.20"        "X4.8.20"        "X4.9.20"       
##  [81] "X4.10.20"       "X4.11.20"       "X4.12.20"       "X4.13.20"      
##  [85] "X4.14.20"       "X4.15.20"       "X4.16.20"       "X4.17.20"      
##  [89] "X4.18.20"       "X4.19.20"       "X4.20.20"       "X4.21.20"      
##  [93] "X4.22.20"       "X4.23.20"       "X4.24.20"       "X4.25.20"      
##  [97] "X4.26.20"       "X4.27.20"       "X4.28.20"       "X4.29.20"      
## [101] "X4.30.20"       "X5.1.20"        "X5.2.20"        "X5.3.20"       
## [105] "X5.4.20"        "X5.5.20"        "X5.6.20"        "X5.7.20"       
## [109] "X5.8.20"        "X5.9.20"        "X5.10.20"       "X5.11.20"      
## [113] "X5.12.20"       "X5.13.20"       "X5.14.20"       "X5.15.20"      
## [117] "X5.16.20"       "X5.17.20"       "X5.18.20"       "X5.19.20"      
## [121] "X5.20.20"       "X5.21.20"       "X5.22.20"       "X5.23.20"      
## [125] "X5.24.20"       "X5.25.20"       "X5.26.20"       "X5.27.20"      
## [129] "X5.28.20"       "X5.29.20"       "X5.30.20"       "X5.31.20"      
## [133] "X6.1.20"        "X6.2.20"        "X6.3.20"        "X6.4.20"       
## [137] "X6.5.20"        "X6.6.20"        "X6.7.20"        "X6.8.20"       
## [141] "X6.9.20"        "X6.10.20"       "X6.11.20"       "X6.12.20"      
## [145] "X6.13.20"       "X6.14.20"       "X6.15.20"       "X6.16.20"      
## [149] "X6.17.20"       "X6.18.20"       "X6.19.20"       "X6.20.20"      
## [153] "X6.21.20"       "X6.22.20"       "X6.23.20"       "X6.24.20"      
## [157] "X6.25.20"       "X6.26.20"       "X6.27.20"       "X6.28.20"      
## [161] "X6.29.20"       "X6.30.20"       "X7.1.20"        "X7.2.20"       
## [165] "X7.3.20"        "X7.4.20"        "X7.5.20"        "X7.6.20"       
## [169] "X7.7.20"        "X7.8.20"        "X7.9.20"        "X7.10.20"      
## [173] "X7.11.20"       "X7.12.20"       "X7.13.20"       "X7.14.20"      
## [177] "X7.15.20"       "X7.16.20"       "X7.17.20"       "X7.18.20"      
## [181] "X7.19.20"       "X7.20.20"       "X7.21.20"       "X7.22.20"      
## [185] "X7.23.20"       "X7.24.20"       "X7.25.20"       "X7.26.20"      
## [189] "X7.27.20"       "X7.28.20"       "X7.29.20"       "X7.30.20"      
## [193] "X7.31.20"       "X8.1.20"        "X8.2.20"        "X8.3.20"       
## [197] "X8.4.20"        "X8.5.20"        "X8.6.20"        "X8.7.20"       
## [201] "X8.8.20"        "X8.9.20"        "X8.10.20"       "X8.11.20"      
## [205] "X8.12.20"       "X8.13.20"       "X8.14.20"       "X8.15.20"      
## [209] "X8.16.20"       "X8.17.20"       "X8.18.20"       "X8.19.20"      
## [213] "X8.20.20"       "X8.21.20"       "X8.22.20"       "X8.23.20"      
## [217] "X8.24.20"       "X8.25.20"       "X8.26.20"       "X8.27.20"      
## [221] "X8.28.20"       "X8.29.20"       "X8.30.20"       "X8.31.20"      
## [225] "X9.1.20"        "X9.2.20"        "X9.3.20"        "X9.4.20"       
## [229] "X9.5.20"        "X9.6.20"        "X9.7.20"        "X9.8.20"       
## [233] "X9.9.20"        "X9.10.20"       "X9.11.20"       "X9.12.20"      
## [237] "X9.13.20"       "X9.14.20"       "X9.15.20"       "X9.16.20"      
## [241] "X9.17.20"       "X9.18.20"       "X9.19.20"       "X9.20.20"      
## [245] "X9.21.20"       "X9.22.20"       "X9.23.20"       "X9.24.20"      
## [249] "X9.25.20"       "X9.26.20"       "X9.27.20"       "X9.28.20"      
## [253] "X9.29.20"       "X9.30.20"       "X10.1.20"       "X10.2.20"      
## [257] "X10.3.20"       "X10.4.20"       "X10.5.20"       "X10.6.20"      
## [261] "X10.7.20"       "X10.8.20"       "X10.9.20"       "X10.10.20"     
## [265] "X10.11.20"      "X10.12.20"      "X10.13.20"      "X10.14.20"     
## [269] "X10.15.20"      "X10.16.20"      "X10.17.20"      "X10.18.20"     
## [273] "X10.19.20"      "X10.20.20"      "X10.21.20"      "X10.22.20"     
## [277] "X10.23.20"      "X10.24.20"      "X10.25.20"      "X10.26.20"     
## [281] "X10.27.20"      "X10.28.20"      "X10.29.20"      "X10.30.20"     
## [285] "X10.31.20"      "X11.1.20"       "X11.2.20"       "X11.3.20"      
## [289] "X11.4.20"       "X11.5.20"       "X11.6.20"       "X11.7.20"      
## [293] "X11.8.20"       "X11.9.20"       "X11.10.20"      "X11.11.20"     
## [297] "X11.12.20"      "X11.13.20"      "X11.14.20"      "X11.15.20"     
## [301] "X11.16.20"      "X11.17.20"      "X11.18.20"      "X11.19.20"     
## [305] "X11.20.20"      "X11.21.20"      "X11.22.20"      "X11.23.20"     
## [309] "X11.24.20"      "X11.25.20"      "X11.26.20"      "X11.27.20"     
## [313] "X11.28.20"      "X11.29.20"      "X11.30.20"      "X12.1.20"      
## [317] "X12.2.20"       "X12.3.20"       "X12.4.20"       "X12.5.20"      
## [321] "X12.6.20"       "X12.7.20"       "X12.8.20"       "X12.9.20"      
## [325] "X12.10.20"      "X12.11.20"      "X12.12.20"      "X12.13.20"     
## [329] "X12.14.20"      "X12.15.20"      "X12.16.20"      "X12.17.20"     
## [333] "X12.18.20"      "X12.19.20"      "X12.20.20"      "X12.21.20"     
## [337] "X12.22.20"      "X12.23.20"      "X12.24.20"      "X12.25.20"     
## [341] "X12.26.20"      "X12.27.20"      "X12.28.20"      "X12.29.20"     
## [345] "X12.30.20"      "X12.31.20"      "X1.1.21"        "X1.2.21"       
## [349] "X1.3.21"        "X1.4.21"        "X1.5.21"        "X1.6.21"       
## [353] "X1.7.21"        "X1.8.21"        "X1.9.21"        "X1.10.21"      
## [357] "X1.11.21"       "X1.12.21"       "X1.13.21"       "X1.14.21"      
## [361] "X1.15.21"       "X1.16.21"       "X1.17.21"       "X1.18.21"      
## [365] "X1.19.21"       "X1.20.21"       "X1.21.21"       "X1.22.21"      
## [369] "X1.23.21"       "X1.24.21"       "X1.25.21"       "X1.26.21"      
## [373] "X1.27.21"       "X1.28.21"       "X1.29.21"       "X1.30.21"      
## [377] "X1.31.21"       "X2.1.21"        "X2.2.21"        "X2.3.21"       
## [381] "X2.4.21"        "X2.5.21"        "X2.6.21"        "X2.7.21"       
## [385] "X2.8.21"        "X2.9.21"        "X2.10.21"       "X2.11.21"      
## [389] "X2.12.21"       "X2.13.21"       "X2.14.21"       "X2.15.21"      
## [393] "X2.16.21"       "X2.17.21"       "X2.18.21"       "X2.19.21"      
## [397] "X2.20.21"       "X2.21.21"       "X2.22.21"       "X2.23.21"      
## [401] "X2.24.21"       "X2.25.21"       "X2.26.21"       "X2.27.21"      
## [405] "X2.28.21"       "X3.1.21"        "X3.2.21"        "X3.3.21"       
## [409] "X3.4.21"        "X3.5.21"        "X3.6.21"        "X3.7.21"       
## [413] "X3.8.21"        "X3.9.21"        "X3.10.21"       "X3.11.21"      
## [417] "X3.12.21"       "X3.13.21"       "X3.14.21"       "X3.15.21"      
## [421] "X3.16.21"       "X3.17.21"       "X3.18.21"       "X3.19.21"      
## [425] "X3.20.21"       "X3.21.21"       "X3.22.21"       "X3.23.21"      
## [429] "X3.24.21"       "X3.25.21"       "X3.26.21"       "X3.27.21"      
## [433] "X3.28.21"       "X3.29.21"       "X3.30.21"       "X3.31.21"      
## [437] "X4.1.21"        "X4.2.21"        "X4.3.21"        "X4.4.21"       
## [441] "X4.5.21"        "X4.6.21"        "X4.7.21"        "X4.8.21"
# head(COVID_19_h, 5)

library(tidyr)
COVID_19  <- COVID_19_h %>% gather(date, casos, 2:ncol(COVID_19_h))
#COVID_19 <- melt(COVID_19_h, id.vars = "Country.Region")  # otra forma de hacer lo mismo

colnames(COVID_19) <- c(  "pais", "date", "casos")

COVID_19$date <- as.Date(as.character(COVID_19$date), format = "X%m.%d.%y")
# agrupo por fecha 

casos_por_fecha <- COVID_19 %>% group_by(date) %>% summarise(casos = sum(casos))
# lo anterior  en SQL seria:

# casos_por_fecha <- sqldf( "select  date, sum(casos) casos
#                           from COVID_19
#                           group by date")
# -- ordenamos
#library(tidyverse)
datos <- arrange(casos_por_fecha, (casos_por_fecha$date) )


###############################################
# genero  figura dinamica

g1 <- ggplot(datos ,aes(x = date, y = casos/1000000)) +
  
  geom_point( size=1, color="blue") +
  ggtitle("COVID_19 - Casos confirmados a nivel mundial") +
  scale_x_date(date_breaks = "10 day", date_labels =  "%d %b") +
  #scale_y_continuous(limits = c(0, 100), breaks = seq(1, 5, 1)) +
  theme(plot.title = element_text(lineheight = 1,face ='bold'))   +
  ylab("cantidad de casos en M") +
  xlab("") +
  labs(caption = "\nFuente: The Johns Hopkins University Center for Systems Science and Engineering (JHU CSSE)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

# + geom_text(aes(label = round(porDiezMil,1)), position = position_stack(vjust = .5))

g1 <- ggplotly(g1, tooltip = c("casos")) %>%
  layout(legend = list(
    orientation = "h",
    x = 0.7,
    y = 1
  )
  )
g1